package org.mca.mcaweb.listener;

import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;

//TODO Apagar essa classe e a configuração no faces-config.xml antes de colocar o sistema em produção
public class LifeCycleListener implements PhaseListener {

	private static final long serialVersionUID = 7624462159689675712L;

	@Override
	public void afterPhase(PhaseEvent event) {
		if (event.getPhaseId() == PhaseId.RESTORE_VIEW) {
			System.out.println("Depois da fase: " + event.getPhaseId() + "{Monta a árvore com os componentes do JSF}");
		} else if (event.getPhaseId() == PhaseId.APPLY_REQUEST_VALUES) {
			System.out.println("Depois da fase: " + event.getPhaseId() + "{Leitura dos valores dos componentes do JSF}");
		} else if (event.getPhaseId() == PhaseId.PROCESS_VALIDATIONS) {
			System.out.println("Depois da fase: " + event.getPhaseId() + "{Faz conversão e validação dos valores do JSF para o Java}");
		} else if (event.getPhaseId() == PhaseId.UPDATE_MODEL_VALUES) {
			System.out.println("Depois da fase: " + event.getPhaseId() + "{Atribui os valores no java utilizando os Gets e Sets}");
		} else if (event.getPhaseId() == PhaseId.INVOKE_APPLICATION) {
			System.out.println("Depois da fase: " + event.getPhaseId() + "{Executa os métodos do Bean}");
		} else if (event.getPhaseId() == PhaseId.RENDER_RESPONSE) {
			System.out.println("Depois da fase: " + event.getPhaseId() + "{Remonta a árvore com os valores das fases anteriores}");
		}
	}

	@Override
	public void beforePhase(PhaseEvent event) {
		if (event.getPhaseId() == PhaseId.RESTORE_VIEW) {
			System.out.println("Antes da fase: " + event.getPhaseId() + "{Monta a árvore com os componentes do JSF}");
		} else if (event.getPhaseId() == PhaseId.APPLY_REQUEST_VALUES) {
			System.out.println("Antes da fase: " + event.getPhaseId() + "{Leitura dos valores dos componentes do JSF}");
		} else if (event.getPhaseId() == PhaseId.PROCESS_VALIDATIONS) {
			System.out.println("Antes da fase: " + event.getPhaseId() + "{Faz conversão e validação dos valores do JSF para o Java}");
		} else if (event.getPhaseId() == PhaseId.UPDATE_MODEL_VALUES) {
			System.out.println("Antes da fase: " + event.getPhaseId() + "{Atribui os valores no java utilizando os Gets e Sets}");
		} else if (event.getPhaseId() == PhaseId.INVOKE_APPLICATION) {
			System.out.println("Antes da fase: " + event.getPhaseId() + "{Executa os métodos do Bean}");
		} else if (event.getPhaseId() == PhaseId.RENDER_RESPONSE) {
			System.out.println("Antes da fase: " + event.getPhaseId() + "{Remonta a árvore com os valores das fases anteriores}");
		}
	}

	@Override
	public PhaseId getPhaseId() {
		return PhaseId.ANY_PHASE;
	}

}
